package com.yuandian.business.monitor.service;

import com.yuandian.api.business_monitor.po.AlarmParams;
import com.yuandian.api.business_monitor.vo.AlarmIndicatorsVo;
import com.yuandian.api.business_monitor.vo.AlarmProportionVo;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.utils.PageDataInfo;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 *
 * 告警信息服务类
 * @author LinShiHe
 * @since 2021-05-27
 */
public interface BusiAlarmService {

	/**
	 * 按照系统ID、业务编码、时间范围、端口ID分类统计各类型告警（告警类型环形图）
	 * @param params  查询参数（系统ID、业务编码、时间范围、端口ID）
	 * @return 返回通用结果集
	 */
	List<AlarmProportionVo> getBusinessAlarmPercent(AlarmParams params);

	/**
	 * 按照系统ID、业务编码、时间范围、端口ID分类统计各等级告警（告警等级环形图）
	 * @param params  查询参数（系统ID、业务编码、时间范围、端口ID）
	 * @return 返回通用结果集
	 */
	List<AlarmProportionVo> getBusinessAlarmLevelPercent(AlarmParams params);

	/**
	 * 按照系统ID、业务编码、时间范围、端口ID查询各告警对应不同等级的告警总数
	 * @param params  查询参数（系统ID、业务编码、时间范围、端口ID）
	 * @return 返回通用结果集
	 */
	PageDataInfo getBusinessGradeDate(AlarmParams params);

	/**
	 * 按照系统ID、业务编码、时间范围、端口ID和告警类型id查询各告警详情列表
	 * @param params  查询参数（系统ID、业务编码、时间范围、端口ID、告警类型id）
	 * @return 返回通用结果集
	 */
	PageDataInfo getBusinessAlarmList(@RequestBody AlarmParams params);


	/**
	 * 查询基础指标列表
	 * @return 返回通用结果集
	 */
	PageDataInfo queryBaseIndicatorsList(@RequestBody AlarmParams params);

	/**
	 * 按照系统ID、业务编码、时间范围、端口ID分类统计各类型告警（告警类型环形图---业务监控详情页面）
	 * @param params  查询参数（系统ID、业务编码、时间范围、端口ID）
	 * @return 返回通用结果集
	 */
	List<AlarmProportionVo> getBusinessMonitorAlarmPercent(AlarmParams params);

	R checkExpression(AlarmIndicatorsVo indicator);

}
